<template>
  <div class="box">
    <div class="container">
      <div class="tit">登 录</div>
      <el-form :model="form" status-icon :rules="rules" ref="form">
        <el-form-item class="opt" prop="username">
          <el-input prefix-icon="el-icon-user" placeholder="账户" type="text" v-model="form.username" autocomplete="off">
          </el-input>
        </el-form-item>

        <el-form-item class="opt" prop="password">
          <el-input prefix-icon="el-icon-lock" placeholder="密码" v-model="form.password" type="password" show-password>
          </el-input>
        </el-form-item>

        <el-form-item>
          <button @click.prevent="submitForm('form')">登录
          </button>
        </el-form-item>
      </el-form>
      <!-- <span>没有账号？<a href="#">去注册</a></span> -->
    </div>
    <div class="square">
      <ul>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
      </ul>
    </div>
    <div class="circle">
      <ul>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
      </ul>
    </div>
  </div>
</template>

<script>
import { loginApi } from "../../api/login";
export default {
  data() {
    var validateAccount = (rule, value, callback) => {
      if (value === "") {
        callback(new Error("请输入账户"));
      } else {
        callback();
      }
    };

    var validatePassword = (rule, value, callback) => {
      if (value === "") {
        callback(new Error("请输入密码"));
      } else {
        callback();
      }
    };

    return {
      form: {
        username: "",
        password: "",
      },
      rules: {
        username: [{ validator: validateAccount, trigger: "blur" }],
        password: [{ validator: validatePassword, trigger: "blur" }],
      }
    };
  },
  methods: {
    // 登录
    submitForm(formName) {
      this.$refs[formName].validate(async (valid) => {
        if (valid) {
          loginApi({
            login: {
              userName: this.form.username,
              password: this.form.password,
            },
          })
            .then((res) => {
              if (res.result == 0) {
                this.$message.error("账号或密码错误");
                return false;
              }

              localStorage.setItem(
                "lmx_token",
                `${this.form.username}分割符${this.form.password}`
              );
              this.$router.push({ path: "/layout" });
            })
            .catch(() => {
              this.$message.error("未连接服务器");
            });
        } else {
          console.log("error submit!!");
          return false;
        }
      });
    },
  },
  watch: {
    "form.username"(item1) {
      this.form.username = item1.replaceAll(" ", "")
    },
    "form.password"(item1) {
      this.form.password = item1.replaceAll(" ", "")
    },

  }
};
</script>

<style lang="scss">
.box {
  /* 100%窗口高度 */
  height: 100vh;
  /* 弹性布局 居中 */
  display: flex;
  justify-content: center;
  align-items: center;
  /* 渐变背景 */
  background: linear-gradient(200deg, #e3c5eb, #a9c1ed);
  /* 溢出隐藏 */
  overflow: hidden;

  .container {
    a {
      color: plum;
      text-decoration: none;
    }

    /* 相对定位 */
    position: relative;
    z-index: 1;
    background-color: #fff;
    border-radius: 15px;
    /* 弹性布局 垂直排列 */
    display: flex;
    flex-direction: column;
    align-items: center;
    width: 350px;
    height: 500px;
    /* 阴影 */
    box-shadow: 0 5px 20px rgba(0, 0, 0, 0.1);

    .tit {
      font-size: 33px;
      margin: 65px auto 70px auto;
    }

    input {
      width: 280px;
      height: 30px;
      text-indent: 8px;
      font-size: medium;
      border: none;
      border-bottom: 1px solid #ddd;
      outline: none;
      margin: 12px auto;
    }

    input:focus {
      border-bottom: 1px solid #ddd;
    }

    button {
      width: 280px;
      height: 40px;
      margin: 35px auto 40px auto;
      border: none;
      background: linear-gradient(-200deg, #fac0e7, #aac2ee);
      color: #fff;
      font-weight: bold;
      letter-spacing: 8px;
      border-radius: 10px;
      cursor: pointer;
      /* 动画过渡 */
      transition: 0.5s;
    }

    button:hover {
      background: linear-gradient(-200deg, #aac2ee, #fac0e7);
      background-position-x: -280px;
    }

  }

  ul li {
    position: absolute;
    border: 1px solid #fff;
    background-color: #fff;
    width: 30px;
    height: 30px;
    list-style: none;
    opacity: 0;
  }
}

.square li {
  top: 40vh;
  left: 60vw;
  /* 执行动画：动画名 时长 线性的 无限次播放 */
  animation: square 10s linear infinite;
}

.square li:nth-child(2) {
  top: 80vh;
  left: 10vw;
  /* 设置动画延迟时间 */
  animation-delay: 2s;
}

.square li:nth-child(3) {
  top: 80vh;
  left: 85vw;
  /* 设置动画延迟时间 */
  animation-delay: 4s;
}

.square li:nth-child(4) {
  top: 10vh;
  left: 70vw;
  /* 设置动画延迟时间 */
  animation-delay: 6s;
}

.square li:nth-child(5) {
  top: 10vh;
  left: 10vw;
  /* 设置动画延迟时间 */
  animation-delay: 8s;
}

.circle li {
  bottom: 0;
  left: 15vw;
  /* 执行动画 */
  animation: circle 10s linear infinite;
}

.circle li:nth-child(2) {
  left: 35vw;
  /* 设置动画延迟时间 */
  animation-delay: 2s;
}

.circle li:nth-child(3) {
  left: 55vw;
  /* 设置动画延迟时间 */
  animation-delay: 6s;
}

.circle li:nth-child(4) {
  left: 75vw;
  /* 设置动画延迟时间 */
  animation-delay: 4s;
}

.circle li:nth-child(5) {
  left: 90vw;
  /* 设置动画延迟时间 */
  animation-delay: 8s;
}

/* 定义动画 */
@keyframes square {
  0% {
    transform: scale(0) rotateY(0deg);
    opacity: 1;
  }

  100% {
    transform: scale(5) rotateY(1000deg);
    opacity: 0;
  }
}

@keyframes circle {
  0% {
    transform: scale(0) rotateY(0deg);
    opacity: 1;
    bottom: 0;
    border-radius: 0;
  }

  100% {
    transform: scale(5) rotateY(1000deg);
    opacity: 0;
    bottom: 90vh;
    border-radius: 50%;
  }
}
</style>